package cn.iocoder.yudao.module.agent.convert.base;

import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.framework.common.validation.Mobile;
import cn.iocoder.yudao.module.agent.base.MemberRespVO;
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
import cn.iocoder.yudao.module.member.controller.app.auth.vo.AppAuthSmsValidateReqVO;
import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO;
import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeValidateReqDTO;
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Mapper
public interface AgentConvert {
    AgentConvert INSTANCE = Mappers.getMapper(AgentConvert.class);

    default MemberRespVO covnertMember(MemberUserRespDTO memberUserRespDTO){
        if(memberUserRespDTO == null){
            return null;
        }

        MemberRespVO vo = new MemberRespVO();
        vo.setId(memberUserRespDTO.getId());
        vo.setAvatar(memberUserRespDTO.getAvatar());
        vo.setNickname(memberUserRespDTO.getNickname());
        vo.setMobile(memberUserRespDTO.getMobile());

        return vo;
    }

    default SmsCodeValidateReqDTO convertSmsValidateReqVO(String mobile, Integer scene, String code){
        SmsCodeValidateReqDTO smsCodeValidateReqDTO = new SmsCodeValidateReqDTO();
        smsCodeValidateReqDTO.setMobile(mobile);
        smsCodeValidateReqDTO.setScene(scene);
        smsCodeValidateReqDTO.setCode(code);

        return smsCodeValidateReqDTO;
    }

    default SmsCodeUseReqDTO convertSmsUseReqVO(String mobile, Integer scene, String code, String usedIp){
        SmsCodeUseReqDTO smsCodeUseReqDTO = new SmsCodeUseReqDTO();
        smsCodeUseReqDTO.setMobile(mobile);
        smsCodeUseReqDTO.setScene(scene);
        smsCodeUseReqDTO.setCode(code);
        smsCodeUseReqDTO.setUsedIp(usedIp);

        return smsCodeUseReqDTO;
    }

    default SmsCodeSendReqDTO convertSmsSendReqDTO(String mobile, Integer scene, String createIp){
        SmsCodeSendReqDTO smsCodeSendReqDTO = new SmsCodeSendReqDTO();
        smsCodeSendReqDTO.setMobile(mobile);
        smsCodeSendReqDTO.setScene(scene);
        smsCodeSendReqDTO.setCreateIp(createIp);

        return smsCodeSendReqDTO;
    }
}
